const express = require('express');
const app = express();
const cors = require('cors');

const mysql = require('mysql');

// 创建数据库连接对象
const connection  = mysql.createConnection({
  host: "localhost", // 数据库服务器地址
  user: "root", // 数据库用户名
  password: "xxx", // 数据库密码
  database: "xxx" // 数据库名称
});

connection.connect();

// 处理跨域中间件
app.use(cors())
// 处理JSON表单格式中间件
app.use(express.json());
// 处理application/x-www-form-urlencoded表单格式的中间件
app.use(express.urlencoded({ extended: false }))


// 新增用户
app.post('/kiki/addUser', (req, res)=>{
  const {userName, sex, age } = req.body;
  // 验证输入数据
  if (!userName || sex === undefined || age === undefined) {
    return  res.send({
      code: -1,
      data: null,
      message: '参数不正确'
    })
  }
   // 生成随机的 userId
  const userId = Math.floor(Math.random() * 1000000);
  const sql = "INSERT INTO user (userId, userName, sex, age) VALUES (?, ?, ?, ?)";
  const values = [userId, userName, sex, age];

  connection.query(sql, values, (err, result) => {
    if (err) {
      throw err;
      // return res.code(-1).send('系统错误，请联系管理员');
    }
    res.send({
      code: 200,
      data: null,
      message: '操作成功'
    })
  });
  
})

// 删除用户
app.post('/kiki/deleteUser', (req, res)=>{
  const { userId } = req.body;
  // 验证输入数据
  if (!userId) {
    return  res.send({
      code: -1,
      data: null,
      message: '参数不正确'
    })
  }
  const sql = "DELETE FROM user WHERE userId = ?";
  const values = [userId];

  connection.query(sql, values, (err, result) => {
    if (err) {
      throw err;
      // throw res.code(-1).send('系统错误，请联系管理员');
    }
    if (result.affectedRows === 0) {
      return res.send({
        code: -1,
        data: null,
        message: '用户不存在'
      })
    }
    res.send({
      code: 200,
      data: null,
      message: '操作成功'
    })
  });
  
})

// 修改用户
app.post('/kiki/updateUser', (req, res)=>{
  const {userId,userName, sex, age } = req.body;
  // 验证输入数据
  if (!userId || !userName || sex === undefined || age === undefined) {
    return  res.send({
      code: -1,
      data: null,
      message: '参数不正确'
    })
  }
  const sql = "UPDATE user SET userName = ?, sex = ?, age = ? WHERE userId = ?";
  const values = [userName, sex, age, userId];

  connection.query(sql, values, (err, result) => {
    if (err) {
      throw err;
      // return res.code(-1).send('系统错误，请联系管理员');
    }
    if (result.affectedRows === 0) {
      return res.send({
        code: -1,
        data: null,
        message: '用户不存在'
      })
    }
    res.send({
      code: 200,
      data: null,
      message: '操作成功'
    })
  });
  
})

// 查询用户
app.post('/kiki/getUsers', (req, res)=>{
  const page = parseInt(req.body.page) || 1; // 当前页码，默认为1
  const limit = parseInt(req.body.limit) || 10; // 每页显示的记录数，默认为10
    // 计算 OFFSET
    const offset = (page - 1) * limit;
    const countSql = "SELECT COUNT(*) AS total FROM user";

   connection.query(countSql, (err, countResult) => {
    if (err) {
      throw err;
      // return res.status(-1).send('系统错误，请联系管理员');
    }

    const total = countResult[0].total;

    // 分页查询用户数据
    const sql = "SELECT * FROM user LIMIT ? OFFSET ?";
    const values = [limit, offset];

    connection.query(sql, values, (err, results) => {
      if (err) {
        throw err;
        // return res.status(-1).send('系统错误，请联系管理员');
      }
      res.send({
        status: 200,
        data: {
          list: results,
          total: total,
          page: page,
          limit: limit
        },
        message: '查询成功'
      });
    });
  });
  
})

// 启动服务器
app.listen(8099, () => {
  console.log('express server running')
})